/*
 * MIT License
 *
 * Copyright (c) 2023 OrdinaryRoad
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: douyin.proto

// Protobuf Java Version: 3.25.3
package tech.ordinaryroad.live.chat.client.codec.douyin.protobuf;

/**
 * Protobuf type {@code TextEffectDetail}
 */
public final class TextEffectDetail extends
    com.google.protobuf.GeneratedMessageV3 implements
    // @@protoc_insertion_point(message_implements:TextEffectDetail)
    TextEffectDetailOrBuilder {
private static final long serialVersionUID = 0L;
  // Use TextEffectDetail.newBuilder() to construct.
  private TextEffectDetail(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    super(builder);
  }
  private TextEffectDetail() {
    shadowColor_ = "";
    strokeColor_ = "";
  }

  @Override
  @SuppressWarnings({"unused"})
  protected Object newInstance(
      UnusedPrivateParameter unused) {
    return new TextEffectDetail();
  }

  public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
    return Douyin.internal_static_TextEffectDetail_descriptor;
  }

  @Override
  protected FieldAccessorTable
      internalGetFieldAccessorTable() {
    return Douyin.internal_static_TextEffectDetail_fieldAccessorTable
        .ensureFieldAccessorsInitialized(
            TextEffectDetail.class, Builder.class);
  }

  private int bitField0_;
  public static final int TEXT_FIELD_NUMBER = 1;
  private Text text_;
  /**
   * <code>.Text text = 1;</code>
   * @return Whether the text field is set.
   */
  @Override
  public boolean hasText() {
    return ((bitField0_ & 0x00000001) != 0);
  }
  /**
   * <code>.Text text = 1;</code>
   * @return The text.
   */
  @Override
  public Text getText() {
    return text_ == null ? Text.getDefaultInstance() : text_;
  }
  /**
   * <code>.Text text = 1;</code>
   */
  @Override
  public TextOrBuilder getTextOrBuilder() {
    return text_ == null ? Text.getDefaultInstance() : text_;
  }

  public static final int TEXTFONTSIZE_FIELD_NUMBER = 2;
  private int textFontSize_ = 0;
  /**
   * <code>uint32 textFontSize = 2;</code>
   * @return The textFontSize.
   */
  @Override
  public int getTextFontSize() {
    return textFontSize_;
  }

  public static final int BACKGROUND_FIELD_NUMBER = 3;
  private Image background_;
  /**
   * <code>.Image background = 3;</code>
   * @return Whether the background field is set.
   */
  @Override
  public boolean hasBackground() {
    return ((bitField0_ & 0x00000002) != 0);
  }
  /**
   * <code>.Image background = 3;</code>
   * @return The background.
   */
  @Override
  public Image getBackground() {
    return background_ == null ? Image.getDefaultInstance() : background_;
  }
  /**
   * <code>.Image background = 3;</code>
   */
  @Override
  public ImageOrBuilder getBackgroundOrBuilder() {
    return background_ == null ? Image.getDefaultInstance() : background_;
  }

  public static final int START_FIELD_NUMBER = 4;
  private int start_ = 0;
  /**
   * <code>uint32 start = 4;</code>
   * @return The start.
   */
  @Override
  public int getStart() {
    return start_;
  }

  public static final int DURATION_FIELD_NUMBER = 5;
  private int duration_ = 0;
  /**
   * <code>uint32 duration = 5;</code>
   * @return The duration.
   */
  @Override
  public int getDuration() {
    return duration_;
  }

  public static final int X_FIELD_NUMBER = 6;
  private int x_ = 0;
  /**
   * <code>uint32 x = 6;</code>
   * @return The x.
   */
  @Override
  public int getX() {
    return x_;
  }

  public static final int Y_FIELD_NUMBER = 7;
  private int y_ = 0;
  /**
   * <code>uint32 y = 7;</code>
   * @return The y.
   */
  @Override
  public int getY() {
    return y_;
  }

  public static final int WIDTH_FIELD_NUMBER = 8;
  private int width_ = 0;
  /**
   * <code>uint32 width = 8;</code>
   * @return The width.
   */
  @Override
  public int getWidth() {
    return width_;
  }

  public static final int HEIGHT_FIELD_NUMBER = 9;
  private int height_ = 0;
  /**
   * <code>uint32 height = 9;</code>
   * @return The height.
   */
  @Override
  public int getHeight() {
    return height_;
  }

  public static final int SHADOWDX_FIELD_NUMBER = 10;
  private int shadowDx_ = 0;
  /**
   * <code>uint32 shadowDx = 10;</code>
   * @return The shadowDx.
   */
  @Override
  public int getShadowDx() {
    return shadowDx_;
  }

  public static final int SHADOWDY_FIELD_NUMBER = 11;
  private int shadowDy_ = 0;
  /**
   * <code>uint32 shadowDy = 11;</code>
   * @return The shadowDy.
   */
  @Override
  public int getShadowDy() {
    return shadowDy_;
  }

  public static final int SHADOWRADIUS_FIELD_NUMBER = 12;
  private int shadowRadius_ = 0;
  /**
   * <code>uint32 shadowRadius = 12;</code>
   * @return The shadowRadius.
   */
  @Override
  public int getShadowRadius() {
    return shadowRadius_;
  }

  public static final int SHADOWCOLOR_FIELD_NUMBER = 13;
  @SuppressWarnings("serial")
  private volatile Object shadowColor_ = "";
  /**
   * <code>string shadowColor = 13;</code>
   * @return The shadowColor.
   */
  @Override
  public String getShadowColor() {
    Object ref = shadowColor_;
    if (ref instanceof String) {
      return (String) ref;
    } else {
      com.google.protobuf.ByteString bs = 
          (com.google.protobuf.ByteString) ref;
      String s = bs.toStringUtf8();
      shadowColor_ = s;
      return s;
    }
  }
  /**
   * <code>string shadowColor = 13;</code>
   * @return The bytes for shadowColor.
   */
  @Override
  public com.google.protobuf.ByteString
      getShadowColorBytes() {
    Object ref = shadowColor_;
    if (ref instanceof String) {
      com.google.protobuf.ByteString b = 
          com.google.protobuf.ByteString.copyFromUtf8(
              (String) ref);
      shadowColor_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int STROKECOLOR_FIELD_NUMBER = 14;
  @SuppressWarnings("serial")
  private volatile Object strokeColor_ = "";
  /**
   * <code>string strokeColor = 14;</code>
   * @return The strokeColor.
   */
  @Override
  public String getStrokeColor() {
    Object ref = strokeColor_;
    if (ref instanceof String) {
      return (String) ref;
    } else {
      com.google.protobuf.ByteString bs = 
          (com.google.protobuf.ByteString) ref;
      String s = bs.toStringUtf8();
      strokeColor_ = s;
      return s;
    }
  }
  /**
   * <code>string strokeColor = 14;</code>
   * @return The bytes for strokeColor.
   */
  @Override
  public com.google.protobuf.ByteString
      getStrokeColorBytes() {
    Object ref = strokeColor_;
    if (ref instanceof String) {
      com.google.protobuf.ByteString b = 
          com.google.protobuf.ByteString.copyFromUtf8(
              (String) ref);
      strokeColor_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int STROKEWIDTH_FIELD_NUMBER = 15;
  private int strokeWidth_ = 0;
  /**
   * <code>uint32 strokeWidth = 15;</code>
   * @return The strokeWidth.
   */
  @Override
  public int getStrokeWidth() {
    return strokeWidth_;
  }

  private byte memoizedIsInitialized = -1;
  @Override
  public final boolean isInitialized() {
    byte isInitialized = memoizedIsInitialized;
    if (isInitialized == 1) return true;
    if (isInitialized == 0) return false;

    memoizedIsInitialized = 1;
    return true;
  }

  @Override
  public void writeTo(com.google.protobuf.CodedOutputStream output)
                      throws java.io.IOException {
    if (((bitField0_ & 0x00000001) != 0)) {
      output.writeMessage(1, getText());
    }
    if (textFontSize_ != 0) {
      output.writeUInt32(2, textFontSize_);
    }
    if (((bitField0_ & 0x00000002) != 0)) {
      output.writeMessage(3, getBackground());
    }
    if (start_ != 0) {
      output.writeUInt32(4, start_);
    }
    if (duration_ != 0) {
      output.writeUInt32(5, duration_);
    }
    if (x_ != 0) {
      output.writeUInt32(6, x_);
    }
    if (y_ != 0) {
      output.writeUInt32(7, y_);
    }
    if (width_ != 0) {
      output.writeUInt32(8, width_);
    }
    if (height_ != 0) {
      output.writeUInt32(9, height_);
    }
    if (shadowDx_ != 0) {
      output.writeUInt32(10, shadowDx_);
    }
    if (shadowDy_ != 0) {
      output.writeUInt32(11, shadowDy_);
    }
    if (shadowRadius_ != 0) {
      output.writeUInt32(12, shadowRadius_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(shadowColor_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 13, shadowColor_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(strokeColor_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 14, strokeColor_);
    }
    if (strokeWidth_ != 0) {
      output.writeUInt32(15, strokeWidth_);
    }
    getUnknownFields().writeTo(output);
  }

  @Override
  public int getSerializedSize() {
    int size = memoizedSize;
    if (size != -1) return size;

    size = 0;
    if (((bitField0_ & 0x00000001) != 0)) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(1, getText());
    }
    if (textFontSize_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(2, textFontSize_);
    }
    if (((bitField0_ & 0x00000002) != 0)) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(3, getBackground());
    }
    if (start_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(4, start_);
    }
    if (duration_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(5, duration_);
    }
    if (x_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(6, x_);
    }
    if (y_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(7, y_);
    }
    if (width_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(8, width_);
    }
    if (height_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(9, height_);
    }
    if (shadowDx_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(10, shadowDx_);
    }
    if (shadowDy_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(11, shadowDy_);
    }
    if (shadowRadius_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(12, shadowRadius_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(shadowColor_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(13, shadowColor_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(strokeColor_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(14, strokeColor_);
    }
    if (strokeWidth_ != 0) {
      size += com.google.protobuf.CodedOutputStream
        .computeUInt32Size(15, strokeWidth_);
    }
    size += getUnknownFields().getSerializedSize();
    memoizedSize = size;
    return size;
  }

  @Override
  public boolean equals(final Object obj) {
    if (obj == this) {
     return true;
    }
    if (!(obj instanceof TextEffectDetail)) {
      return super.equals(obj);
    }
    TextEffectDetail other = (TextEffectDetail) obj;

    if (hasText() != other.hasText()) return false;
    if (hasText()) {
      if (!getText()
          .equals(other.getText())) return false;
    }
    if (getTextFontSize()
        != other.getTextFontSize()) return false;
    if (hasBackground() != other.hasBackground()) return false;
    if (hasBackground()) {
      if (!getBackground()
          .equals(other.getBackground())) return false;
    }
    if (getStart()
        != other.getStart()) return false;
    if (getDuration()
        != other.getDuration()) return false;
    if (getX()
        != other.getX()) return false;
    if (getY()
        != other.getY()) return false;
    if (getWidth()
        != other.getWidth()) return false;
    if (getHeight()
        != other.getHeight()) return false;
    if (getShadowDx()
        != other.getShadowDx()) return false;
    if (getShadowDy()
        != other.getShadowDy()) return false;
    if (getShadowRadius()
        != other.getShadowRadius()) return false;
    if (!getShadowColor()
        .equals(other.getShadowColor())) return false;
    if (!getStrokeColor()
        .equals(other.getStrokeColor())) return false;
    if (getStrokeWidth()
        != other.getStrokeWidth()) return false;
    if (!getUnknownFields().equals(other.getUnknownFields())) return false;
    return true;
  }

  @Override
  public int hashCode() {
    if (memoizedHashCode != 0) {
      return memoizedHashCode;
    }
    int hash = 41;
    hash = (19 * hash) + getDescriptor().hashCode();
    if (hasText()) {
      hash = (37 * hash) + TEXT_FIELD_NUMBER;
      hash = (53 * hash) + getText().hashCode();
    }
    hash = (37 * hash) + TEXTFONTSIZE_FIELD_NUMBER;
    hash = (53 * hash) + getTextFontSize();
    if (hasBackground()) {
      hash = (37 * hash) + BACKGROUND_FIELD_NUMBER;
      hash = (53 * hash) + getBackground().hashCode();
    }
    hash = (37 * hash) + START_FIELD_NUMBER;
    hash = (53 * hash) + getStart();
    hash = (37 * hash) + DURATION_FIELD_NUMBER;
    hash = (53 * hash) + getDuration();
    hash = (37 * hash) + X_FIELD_NUMBER;
    hash = (53 * hash) + getX();
    hash = (37 * hash) + Y_FIELD_NUMBER;
    hash = (53 * hash) + getY();
    hash = (37 * hash) + WIDTH_FIELD_NUMBER;
    hash = (53 * hash) + getWidth();
    hash = (37 * hash) + HEIGHT_FIELD_NUMBER;
    hash = (53 * hash) + getHeight();
    hash = (37 * hash) + SHADOWDX_FIELD_NUMBER;
    hash = (53 * hash) + getShadowDx();
    hash = (37 * hash) + SHADOWDY_FIELD_NUMBER;
    hash = (53 * hash) + getShadowDy();
    hash = (37 * hash) + SHADOWRADIUS_FIELD_NUMBER;
    hash = (53 * hash) + getShadowRadius();
    hash = (37 * hash) + SHADOWCOLOR_FIELD_NUMBER;
    hash = (53 * hash) + getShadowColor().hashCode();
    hash = (37 * hash) + STROKECOLOR_FIELD_NUMBER;
    hash = (53 * hash) + getStrokeColor().hashCode();
    hash = (37 * hash) + STROKEWIDTH_FIELD_NUMBER;
    hash = (53 * hash) + getStrokeWidth();
    hash = (29 * hash) + getUnknownFields().hashCode();
    memoizedHashCode = hash;
    return hash;
  }

  public static TextEffectDetail parseFrom(
      java.nio.ByteBuffer data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static TextEffectDetail parseFrom(
      java.nio.ByteBuffer data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static TextEffectDetail parseFrom(
      com.google.protobuf.ByteString data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static TextEffectDetail parseFrom(
      com.google.protobuf.ByteString data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static TextEffectDetail parseFrom(byte[] data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static TextEffectDetail parseFrom(
      byte[] data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static TextEffectDetail parseFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input);
  }
  public static TextEffectDetail parseFrom(
      java.io.InputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input, extensionRegistry);
  }

  public static TextEffectDetail parseDelimitedFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseDelimitedWithIOException(PARSER, input);
  }

  public static TextEffectDetail parseDelimitedFrom(
      java.io.InputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
  }
  public static TextEffectDetail parseFrom(
      com.google.protobuf.CodedInputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input);
  }
  public static TextEffectDetail parseFrom(
      com.google.protobuf.CodedInputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input, extensionRegistry);
  }

  @Override
  public Builder newBuilderForType() { return newBuilder(); }
  public static Builder newBuilder() {
    return DEFAULT_INSTANCE.toBuilder();
  }
  public static Builder newBuilder(TextEffectDetail prototype) {
    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
  }
  @Override
  public Builder toBuilder() {
    return this == DEFAULT_INSTANCE
        ? new Builder() : new Builder().mergeFrom(this);
  }

  @Override
  protected Builder newBuilderForType(
      BuilderParent parent) {
    Builder builder = new Builder(parent);
    return builder;
  }
  /**
   * Protobuf type {@code TextEffectDetail}
   */
  public static final class Builder extends
      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
      // @@protoc_insertion_point(builder_implements:TextEffectDetail)
      TextEffectDetailOrBuilder {
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return Douyin.internal_static_TextEffectDetail_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return Douyin.internal_static_TextEffectDetail_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              TextEffectDetail.class, Builder.class);
    }

    // Construct using tech.ordinaryroad.live.chat.client.codec.douyin.protobuf.TextEffectDetail.newBuilder()
    private Builder() {
      maybeForceBuilderInitialization();
    }

    private Builder(
        BuilderParent parent) {
      super(parent);
      maybeForceBuilderInitialization();
    }
    private void maybeForceBuilderInitialization() {
      if (com.google.protobuf.GeneratedMessageV3
              .alwaysUseFieldBuilders) {
        getTextFieldBuilder();
        getBackgroundFieldBuilder();
      }
    }
    @Override
    public Builder clear() {
      super.clear();
      bitField0_ = 0;
      text_ = null;
      if (textBuilder_ != null) {
        textBuilder_.dispose();
        textBuilder_ = null;
      }
      textFontSize_ = 0;
      background_ = null;
      if (backgroundBuilder_ != null) {
        backgroundBuilder_.dispose();
        backgroundBuilder_ = null;
      }
      start_ = 0;
      duration_ = 0;
      x_ = 0;
      y_ = 0;
      width_ = 0;
      height_ = 0;
      shadowDx_ = 0;
      shadowDy_ = 0;
      shadowRadius_ = 0;
      shadowColor_ = "";
      strokeColor_ = "";
      strokeWidth_ = 0;
      return this;
    }

    @Override
    public com.google.protobuf.Descriptors.Descriptor
        getDescriptorForType() {
      return Douyin.internal_static_TextEffectDetail_descriptor;
    }

    @Override
    public TextEffectDetail getDefaultInstanceForType() {
      return TextEffectDetail.getDefaultInstance();
    }

    @Override
    public TextEffectDetail build() {
      TextEffectDetail result = buildPartial();
      if (!result.isInitialized()) {
        throw newUninitializedMessageException(result);
      }
      return result;
    }

    @Override
    public TextEffectDetail buildPartial() {
      TextEffectDetail result = new TextEffectDetail(this);
      if (bitField0_ != 0) { buildPartial0(result); }
      onBuilt();
      return result;
    }

    private void buildPartial0(TextEffectDetail result) {
      int from_bitField0_ = bitField0_;
      int to_bitField0_ = 0;
      if (((from_bitField0_ & 0x00000001) != 0)) {
        result.text_ = textBuilder_ == null
            ? text_
            : textBuilder_.build();
        to_bitField0_ |= 0x00000001;
      }
      if (((from_bitField0_ & 0x00000002) != 0)) {
        result.textFontSize_ = textFontSize_;
      }
      if (((from_bitField0_ & 0x00000004) != 0)) {
        result.background_ = backgroundBuilder_ == null
            ? background_
            : backgroundBuilder_.build();
        to_bitField0_ |= 0x00000002;
      }
      if (((from_bitField0_ & 0x00000008) != 0)) {
        result.start_ = start_;
      }
      if (((from_bitField0_ & 0x00000010) != 0)) {
        result.duration_ = duration_;
      }
      if (((from_bitField0_ & 0x00000020) != 0)) {
        result.x_ = x_;
      }
      if (((from_bitField0_ & 0x00000040) != 0)) {
        result.y_ = y_;
      }
      if (((from_bitField0_ & 0x00000080) != 0)) {
        result.width_ = width_;
      }
      if (((from_bitField0_ & 0x00000100) != 0)) {
        result.height_ = height_;
      }
      if (((from_bitField0_ & 0x00000200) != 0)) {
        result.shadowDx_ = shadowDx_;
      }
      if (((from_bitField0_ & 0x00000400) != 0)) {
        result.shadowDy_ = shadowDy_;
      }
      if (((from_bitField0_ & 0x00000800) != 0)) {
        result.shadowRadius_ = shadowRadius_;
      }
      if (((from_bitField0_ & 0x00001000) != 0)) {
        result.shadowColor_ = shadowColor_;
      }
      if (((from_bitField0_ & 0x00002000) != 0)) {
        result.strokeColor_ = strokeColor_;
      }
      if (((from_bitField0_ & 0x00004000) != 0)) {
        result.strokeWidth_ = strokeWidth_;
      }
      result.bitField0_ |= to_bitField0_;
    }

    @Override
    public Builder clone() {
      return super.clone();
    }
    @Override
    public Builder setField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        Object value) {
      return super.setField(field, value);
    }
    @Override
    public Builder clearField(
        com.google.protobuf.Descriptors.FieldDescriptor field) {
      return super.clearField(field);
    }
    @Override
    public Builder clearOneof(
        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
      return super.clearOneof(oneof);
    }
    @Override
    public Builder setRepeatedField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        int index, Object value) {
      return super.setRepeatedField(field, index, value);
    }
    @Override
    public Builder addRepeatedField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        Object value) {
      return super.addRepeatedField(field, value);
    }
    @Override
    public Builder mergeFrom(com.google.protobuf.Message other) {
      if (other instanceof TextEffectDetail) {
        return mergeFrom((TextEffectDetail)other);
      } else {
        super.mergeFrom(other);
        return this;
      }
    }

    public Builder mergeFrom(TextEffectDetail other) {
      if (other == TextEffectDetail.getDefaultInstance()) return this;
      if (other.hasText()) {
        mergeText(other.getText());
      }
      if (other.getTextFontSize() != 0) {
        setTextFontSize(other.getTextFontSize());
      }
      if (other.hasBackground()) {
        mergeBackground(other.getBackground());
      }
      if (other.getStart() != 0) {
        setStart(other.getStart());
      }
      if (other.getDuration() != 0) {
        setDuration(other.getDuration());
      }
      if (other.getX() != 0) {
        setX(other.getX());
      }
      if (other.getY() != 0) {
        setY(other.getY());
      }
      if (other.getWidth() != 0) {
        setWidth(other.getWidth());
      }
      if (other.getHeight() != 0) {
        setHeight(other.getHeight());
      }
      if (other.getShadowDx() != 0) {
        setShadowDx(other.getShadowDx());
      }
      if (other.getShadowDy() != 0) {
        setShadowDy(other.getShadowDy());
      }
      if (other.getShadowRadius() != 0) {
        setShadowRadius(other.getShadowRadius());
      }
      if (!other.getShadowColor().isEmpty()) {
        shadowColor_ = other.shadowColor_;
        bitField0_ |= 0x00001000;
        onChanged();
      }
      if (!other.getStrokeColor().isEmpty()) {
        strokeColor_ = other.strokeColor_;
        bitField0_ |= 0x00002000;
        onChanged();
      }
      if (other.getStrokeWidth() != 0) {
        setStrokeWidth(other.getStrokeWidth());
      }
      this.mergeUnknownFields(other.getUnknownFields());
      onChanged();
      return this;
    }

    @Override
    public final boolean isInitialized() {
      return true;
    }

    @Override
    public Builder mergeFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              input.readMessage(
                  getTextFieldBuilder().getBuilder(),
                  extensionRegistry);
              bitField0_ |= 0x00000001;
              break;
            } // case 10
            case 16: {
              textFontSize_ = input.readUInt32();
              bitField0_ |= 0x00000002;
              break;
            } // case 16
            case 26: {
              input.readMessage(
                  getBackgroundFieldBuilder().getBuilder(),
                  extensionRegistry);
              bitField0_ |= 0x00000004;
              break;
            } // case 26
            case 32: {
              start_ = input.readUInt32();
              bitField0_ |= 0x00000008;
              break;
            } // case 32
            case 40: {
              duration_ = input.readUInt32();
              bitField0_ |= 0x00000010;
              break;
            } // case 40
            case 48: {
              x_ = input.readUInt32();
              bitField0_ |= 0x00000020;
              break;
            } // case 48
            case 56: {
              y_ = input.readUInt32();
              bitField0_ |= 0x00000040;
              break;
            } // case 56
            case 64: {
              width_ = input.readUInt32();
              bitField0_ |= 0x00000080;
              break;
            } // case 64
            case 72: {
              height_ = input.readUInt32();
              bitField0_ |= 0x00000100;
              break;
            } // case 72
            case 80: {
              shadowDx_ = input.readUInt32();
              bitField0_ |= 0x00000200;
              break;
            } // case 80
            case 88: {
              shadowDy_ = input.readUInt32();
              bitField0_ |= 0x00000400;
              break;
            } // case 88
            case 96: {
              shadowRadius_ = input.readUInt32();
              bitField0_ |= 0x00000800;
              break;
            } // case 96
            case 106: {
              shadowColor_ = input.readStringRequireUtf8();
              bitField0_ |= 0x00001000;
              break;
            } // case 106
            case 114: {
              strokeColor_ = input.readStringRequireUtf8();
              bitField0_ |= 0x00002000;
              break;
            } // case 114
            case 120: {
              strokeWidth_ = input.readUInt32();
              bitField0_ |= 0x00004000;
              break;
            } // case 120
            default: {
              if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                done = true; // was an endgroup tag
              }
              break;
            } // default:
          } // switch (tag)
        } // while (!done)
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.unwrapIOException();
      } finally {
        onChanged();
      } // finally
      return this;
    }
    private int bitField0_;

    private Text text_;
    private com.google.protobuf.SingleFieldBuilderV3<
        Text, Text.Builder, TextOrBuilder> textBuilder_;
    /**
     * <code>.Text text = 1;</code>
     * @return Whether the text field is set.
     */
    public boolean hasText() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>.Text text = 1;</code>
     * @return The text.
     */
    public Text getText() {
      if (textBuilder_ == null) {
        return text_ == null ? Text.getDefaultInstance() : text_;
      } else {
        return textBuilder_.getMessage();
      }
    }
    /**
     * <code>.Text text = 1;</code>
     */
    public Builder setText(Text value) {
      if (textBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        text_ = value;
      } else {
        textBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000001;
      onChanged();
      return this;
    }
    /**
     * <code>.Text text = 1;</code>
     */
    public Builder setText(
        Text.Builder builderForValue) {
      if (textBuilder_ == null) {
        text_ = builderForValue.build();
      } else {
        textBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000001;
      onChanged();
      return this;
    }
    /**
     * <code>.Text text = 1;</code>
     */
    public Builder mergeText(Text value) {
      if (textBuilder_ == null) {
        if (((bitField0_ & 0x00000001) != 0) &&
          text_ != null &&
          text_ != Text.getDefaultInstance()) {
          getTextBuilder().mergeFrom(value);
        } else {
          text_ = value;
        }
      } else {
        textBuilder_.mergeFrom(value);
      }
      if (text_ != null) {
        bitField0_ |= 0x00000001;
        onChanged();
      }
      return this;
    }
    /**
     * <code>.Text text = 1;</code>
     */
    public Builder clearText() {
      bitField0_ = (bitField0_ & ~0x00000001);
      text_ = null;
      if (textBuilder_ != null) {
        textBuilder_.dispose();
        textBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     * <code>.Text text = 1;</code>
     */
    public Text.Builder getTextBuilder() {
      bitField0_ |= 0x00000001;
      onChanged();
      return getTextFieldBuilder().getBuilder();
    }
    /**
     * <code>.Text text = 1;</code>
     */
    public TextOrBuilder getTextOrBuilder() {
      if (textBuilder_ != null) {
        return textBuilder_.getMessageOrBuilder();
      } else {
        return text_ == null ?
            Text.getDefaultInstance() : text_;
      }
    }
    /**
     * <code>.Text text = 1;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        Text, Text.Builder, TextOrBuilder>
        getTextFieldBuilder() {
      if (textBuilder_ == null) {
        textBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            Text, Text.Builder, TextOrBuilder>(
                getText(),
                getParentForChildren(),
                isClean());
        text_ = null;
      }
      return textBuilder_;
    }

    private int textFontSize_ ;
    /**
     * <code>uint32 textFontSize = 2;</code>
     * @return The textFontSize.
     */
    @Override
    public int getTextFontSize() {
      return textFontSize_;
    }
    /**
     * <code>uint32 textFontSize = 2;</code>
     * @param value The textFontSize to set.
     * @return This builder for chaining.
     */
    public Builder setTextFontSize(int value) {

      textFontSize_ = value;
      bitField0_ |= 0x00000002;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 textFontSize = 2;</code>
     * @return This builder for chaining.
     */
    public Builder clearTextFontSize() {
      bitField0_ = (bitField0_ & ~0x00000002);
      textFontSize_ = 0;
      onChanged();
      return this;
    }

    private Image background_;
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder> backgroundBuilder_;
    /**
     * <code>.Image background = 3;</code>
     * @return Whether the background field is set.
     */
    public boolean hasBackground() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>.Image background = 3;</code>
     * @return The background.
     */
    public Image getBackground() {
      if (backgroundBuilder_ == null) {
        return background_ == null ? Image.getDefaultInstance() : background_;
      } else {
        return backgroundBuilder_.getMessage();
      }
    }
    /**
     * <code>.Image background = 3;</code>
     */
    public Builder setBackground(Image value) {
      if (backgroundBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        background_ = value;
      } else {
        backgroundBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000004;
      onChanged();
      return this;
    }
    /**
     * <code>.Image background = 3;</code>
     */
    public Builder setBackground(
        Image.Builder builderForValue) {
      if (backgroundBuilder_ == null) {
        background_ = builderForValue.build();
      } else {
        backgroundBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000004;
      onChanged();
      return this;
    }
    /**
     * <code>.Image background = 3;</code>
     */
    public Builder mergeBackground(Image value) {
      if (backgroundBuilder_ == null) {
        if (((bitField0_ & 0x00000004) != 0) &&
          background_ != null &&
          background_ != Image.getDefaultInstance()) {
          getBackgroundBuilder().mergeFrom(value);
        } else {
          background_ = value;
        }
      } else {
        backgroundBuilder_.mergeFrom(value);
      }
      if (background_ != null) {
        bitField0_ |= 0x00000004;
        onChanged();
      }
      return this;
    }
    /**
     * <code>.Image background = 3;</code>
     */
    public Builder clearBackground() {
      bitField0_ = (bitField0_ & ~0x00000004);
      background_ = null;
      if (backgroundBuilder_ != null) {
        backgroundBuilder_.dispose();
        backgroundBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     * <code>.Image background = 3;</code>
     */
    public Image.Builder getBackgroundBuilder() {
      bitField0_ |= 0x00000004;
      onChanged();
      return getBackgroundFieldBuilder().getBuilder();
    }
    /**
     * <code>.Image background = 3;</code>
     */
    public ImageOrBuilder getBackgroundOrBuilder() {
      if (backgroundBuilder_ != null) {
        return backgroundBuilder_.getMessageOrBuilder();
      } else {
        return background_ == null ?
            Image.getDefaultInstance() : background_;
      }
    }
    /**
     * <code>.Image background = 3;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        Image, Image.Builder, ImageOrBuilder>
        getBackgroundFieldBuilder() {
      if (backgroundBuilder_ == null) {
        backgroundBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            Image, Image.Builder, ImageOrBuilder>(
                getBackground(),
                getParentForChildren(),
                isClean());
        background_ = null;
      }
      return backgroundBuilder_;
    }

    private int start_ ;
    /**
     * <code>uint32 start = 4;</code>
     * @return The start.
     */
    @Override
    public int getStart() {
      return start_;
    }
    /**
     * <code>uint32 start = 4;</code>
     * @param value The start to set.
     * @return This builder for chaining.
     */
    public Builder setStart(int value) {

      start_ = value;
      bitField0_ |= 0x00000008;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 start = 4;</code>
     * @return This builder for chaining.
     */
    public Builder clearStart() {
      bitField0_ = (bitField0_ & ~0x00000008);
      start_ = 0;
      onChanged();
      return this;
    }

    private int duration_ ;
    /**
     * <code>uint32 duration = 5;</code>
     * @return The duration.
     */
    @Override
    public int getDuration() {
      return duration_;
    }
    /**
     * <code>uint32 duration = 5;</code>
     * @param value The duration to set.
     * @return This builder for chaining.
     */
    public Builder setDuration(int value) {

      duration_ = value;
      bitField0_ |= 0x00000010;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 duration = 5;</code>
     * @return This builder for chaining.
     */
    public Builder clearDuration() {
      bitField0_ = (bitField0_ & ~0x00000010);
      duration_ = 0;
      onChanged();
      return this;
    }

    private int x_ ;
    /**
     * <code>uint32 x = 6;</code>
     * @return The x.
     */
    @Override
    public int getX() {
      return x_;
    }
    /**
     * <code>uint32 x = 6;</code>
     * @param value The x to set.
     * @return This builder for chaining.
     */
    public Builder setX(int value) {

      x_ = value;
      bitField0_ |= 0x00000020;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 x = 6;</code>
     * @return This builder for chaining.
     */
    public Builder clearX() {
      bitField0_ = (bitField0_ & ~0x00000020);
      x_ = 0;
      onChanged();
      return this;
    }

    private int y_ ;
    /**
     * <code>uint32 y = 7;</code>
     * @return The y.
     */
    @Override
    public int getY() {
      return y_;
    }
    /**
     * <code>uint32 y = 7;</code>
     * @param value The y to set.
     * @return This builder for chaining.
     */
    public Builder setY(int value) {

      y_ = value;
      bitField0_ |= 0x00000040;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 y = 7;</code>
     * @return This builder for chaining.
     */
    public Builder clearY() {
      bitField0_ = (bitField0_ & ~0x00000040);
      y_ = 0;
      onChanged();
      return this;
    }

    private int width_ ;
    /**
     * <code>uint32 width = 8;</code>
     * @return The width.
     */
    @Override
    public int getWidth() {
      return width_;
    }
    /**
     * <code>uint32 width = 8;</code>
     * @param value The width to set.
     * @return This builder for chaining.
     */
    public Builder setWidth(int value) {

      width_ = value;
      bitField0_ |= 0x00000080;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 width = 8;</code>
     * @return This builder for chaining.
     */
    public Builder clearWidth() {
      bitField0_ = (bitField0_ & ~0x00000080);
      width_ = 0;
      onChanged();
      return this;
    }

    private int height_ ;
    /**
     * <code>uint32 height = 9;</code>
     * @return The height.
     */
    @Override
    public int getHeight() {
      return height_;
    }
    /**
     * <code>uint32 height = 9;</code>
     * @param value The height to set.
     * @return This builder for chaining.
     */
    public Builder setHeight(int value) {

      height_ = value;
      bitField0_ |= 0x00000100;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 height = 9;</code>
     * @return This builder for chaining.
     */
    public Builder clearHeight() {
      bitField0_ = (bitField0_ & ~0x00000100);
      height_ = 0;
      onChanged();
      return this;
    }

    private int shadowDx_ ;
    /**
     * <code>uint32 shadowDx = 10;</code>
     * @return The shadowDx.
     */
    @Override
    public int getShadowDx() {
      return shadowDx_;
    }
    /**
     * <code>uint32 shadowDx = 10;</code>
     * @param value The shadowDx to set.
     * @return This builder for chaining.
     */
    public Builder setShadowDx(int value) {

      shadowDx_ = value;
      bitField0_ |= 0x00000200;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 shadowDx = 10;</code>
     * @return This builder for chaining.
     */
    public Builder clearShadowDx() {
      bitField0_ = (bitField0_ & ~0x00000200);
      shadowDx_ = 0;
      onChanged();
      return this;
    }

    private int shadowDy_ ;
    /**
     * <code>uint32 shadowDy = 11;</code>
     * @return The shadowDy.
     */
    @Override
    public int getShadowDy() {
      return shadowDy_;
    }
    /**
     * <code>uint32 shadowDy = 11;</code>
     * @param value The shadowDy to set.
     * @return This builder for chaining.
     */
    public Builder setShadowDy(int value) {

      shadowDy_ = value;
      bitField0_ |= 0x00000400;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 shadowDy = 11;</code>
     * @return This builder for chaining.
     */
    public Builder clearShadowDy() {
      bitField0_ = (bitField0_ & ~0x00000400);
      shadowDy_ = 0;
      onChanged();
      return this;
    }

    private int shadowRadius_ ;
    /**
     * <code>uint32 shadowRadius = 12;</code>
     * @return The shadowRadius.
     */
    @Override
    public int getShadowRadius() {
      return shadowRadius_;
    }
    /**
     * <code>uint32 shadowRadius = 12;</code>
     * @param value The shadowRadius to set.
     * @return This builder for chaining.
     */
    public Builder setShadowRadius(int value) {

      shadowRadius_ = value;
      bitField0_ |= 0x00000800;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 shadowRadius = 12;</code>
     * @return This builder for chaining.
     */
    public Builder clearShadowRadius() {
      bitField0_ = (bitField0_ & ~0x00000800);
      shadowRadius_ = 0;
      onChanged();
      return this;
    }

    private Object shadowColor_ = "";
    /**
     * <code>string shadowColor = 13;</code>
     * @return The shadowColor.
     */
    public String getShadowColor() {
      Object ref = shadowColor_;
      if (!(ref instanceof String)) {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        shadowColor_ = s;
        return s;
      } else {
        return (String) ref;
      }
    }
    /**
     * <code>string shadowColor = 13;</code>
     * @return The bytes for shadowColor.
     */
    public com.google.protobuf.ByteString
        getShadowColorBytes() {
      Object ref = shadowColor_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        shadowColor_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     * <code>string shadowColor = 13;</code>
     * @param value The shadowColor to set.
     * @return This builder for chaining.
     */
    public Builder setShadowColor(
        String value) {
      if (value == null) { throw new NullPointerException(); }
      shadowColor_ = value;
      bitField0_ |= 0x00001000;
      onChanged();
      return this;
    }
    /**
     * <code>string shadowColor = 13;</code>
     * @return This builder for chaining.
     */
    public Builder clearShadowColor() {
      shadowColor_ = getDefaultInstance().getShadowColor();
      bitField0_ = (bitField0_ & ~0x00001000);
      onChanged();
      return this;
    }
    /**
     * <code>string shadowColor = 13;</code>
     * @param value The bytes for shadowColor to set.
     * @return This builder for chaining.
     */
    public Builder setShadowColorBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) { throw new NullPointerException(); }
      checkByteStringIsUtf8(value);
      shadowColor_ = value;
      bitField0_ |= 0x00001000;
      onChanged();
      return this;
    }

    private Object strokeColor_ = "";
    /**
     * <code>string strokeColor = 14;</code>
     * @return The strokeColor.
     */
    public String getStrokeColor() {
      Object ref = strokeColor_;
      if (!(ref instanceof String)) {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        strokeColor_ = s;
        return s;
      } else {
        return (String) ref;
      }
    }
    /**
     * <code>string strokeColor = 14;</code>
     * @return The bytes for strokeColor.
     */
    public com.google.protobuf.ByteString
        getStrokeColorBytes() {
      Object ref = strokeColor_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        strokeColor_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     * <code>string strokeColor = 14;</code>
     * @param value The strokeColor to set.
     * @return This builder for chaining.
     */
    public Builder setStrokeColor(
        String value) {
      if (value == null) { throw new NullPointerException(); }
      strokeColor_ = value;
      bitField0_ |= 0x00002000;
      onChanged();
      return this;
    }
    /**
     * <code>string strokeColor = 14;</code>
     * @return This builder for chaining.
     */
    public Builder clearStrokeColor() {
      strokeColor_ = getDefaultInstance().getStrokeColor();
      bitField0_ = (bitField0_ & ~0x00002000);
      onChanged();
      return this;
    }
    /**
     * <code>string strokeColor = 14;</code>
     * @param value The bytes for strokeColor to set.
     * @return This builder for chaining.
     */
    public Builder setStrokeColorBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) { throw new NullPointerException(); }
      checkByteStringIsUtf8(value);
      strokeColor_ = value;
      bitField0_ |= 0x00002000;
      onChanged();
      return this;
    }

    private int strokeWidth_ ;
    /**
     * <code>uint32 strokeWidth = 15;</code>
     * @return The strokeWidth.
     */
    @Override
    public int getStrokeWidth() {
      return strokeWidth_;
    }
    /**
     * <code>uint32 strokeWidth = 15;</code>
     * @param value The strokeWidth to set.
     * @return This builder for chaining.
     */
    public Builder setStrokeWidth(int value) {

      strokeWidth_ = value;
      bitField0_ |= 0x00004000;
      onChanged();
      return this;
    }
    /**
     * <code>uint32 strokeWidth = 15;</code>
     * @return This builder for chaining.
     */
    public Builder clearStrokeWidth() {
      bitField0_ = (bitField0_ & ~0x00004000);
      strokeWidth_ = 0;
      onChanged();
      return this;
    }
    @Override
    public final Builder setUnknownFields(
        final com.google.protobuf.UnknownFieldSet unknownFields) {
      return super.setUnknownFields(unknownFields);
    }

    @Override
    public final Builder mergeUnknownFields(
        final com.google.protobuf.UnknownFieldSet unknownFields) {
      return super.mergeUnknownFields(unknownFields);
    }


    // @@protoc_insertion_point(builder_scope:TextEffectDetail)
  }

  // @@protoc_insertion_point(class_scope:TextEffectDetail)
  private static final TextEffectDetail DEFAULT_INSTANCE;
  static {
    DEFAULT_INSTANCE = new TextEffectDetail();
  }

  public static TextEffectDetail getDefaultInstance() {
    return DEFAULT_INSTANCE;
  }

  private static final com.google.protobuf.Parser<TextEffectDetail>
      PARSER = new com.google.protobuf.AbstractParser<TextEffectDetail>() {
    @Override
    public TextEffectDetail parsePartialFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      Builder builder = newBuilder();
      try {
        builder.mergeFrom(input, extensionRegistry);
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(builder.buildPartial());
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(e)
            .setUnfinishedMessage(builder.buildPartial());
      }
      return builder.buildPartial();
    }
  };

  public static com.google.protobuf.Parser<TextEffectDetail> parser() {
    return PARSER;
  }

  @Override
  public com.google.protobuf.Parser<TextEffectDetail> getParserForType() {
    return PARSER;
  }

  @Override
  public TextEffectDetail getDefaultInstanceForType() {
    return DEFAULT_INSTANCE;
  }

}

